package org.xlx.xlx_oa.warehouse.convertor;

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import org.xlx.xlx_oa.common.BaseConvertor;
import org.xlx.xlx_oa.warehouse.domain.*;
import org.xlx.xlx_oa.warehouse.domain.dto.*;
import org.xlx.xlx_oa.warehouse.domain.vo.*;

import java.util.List;

@Mapper
public interface WarehouseConvertor extends BaseConvertor {
    WarehouseConvertor INSTANCE = Mappers.getMapper(WarehouseConvertor.class);

    Warehouse convertVoToDomain(WarehouseVo warehouseVo);

    WarehouseDto convertToDomainDto(Warehouse warehouse);

    List<WarehouseDto> convertToDomainDtoList(List<Warehouse> list);

    WarehouseFacility convertVoToFacility(FacilityVo facilityVo);

    FacilityVo convertDtoToFacilityVo(FacilityDto dto);

    FacilityDto convertToFacilityDto(WarehouseFacility facility);

    List<FacilityDto> convertToFacilityDtoList(List<WarehouseFacility> list);

    WarehouseDistributor convertVoToDistributor(DistributorVo distributorVo);

    DistributorDto convertToDistributorDto(WarehouseDistributor distributor);

    List<DistributorDto> convertToListDistributorDto(List<WarehouseDistributor> list);

    WarehouseApply convertVoToApply(WarehouseApplyVo applyVo);

    WarehouseApplyVo convertToApplyVo(WarehouseApply apply);

    WarehouseApplyDto convertToApplyDto(WarehouseApply apply);

    List<WarehouseApplyDto> convertToApplyDtoList(List<WarehouseApply> list);

    WarehouseApplyItem convertVoToApplyItem(ApplyItemVo applyItemVo);

    ApplyItemVo convertToApplyItemVo(WarehouseApplyItem applyItem);

    List<ApplyItemVo> convertToApplyItemVoList(List<WarehouseApplyItem> list);

    List<WarehouseApplyItem> convertVoToApplyItemList(List<ApplyItemVo> list);

    ApplyItemDto convertToApplyItemDto(WarehouseApplyItem item);

    List<ApplyItemDto> convertToApplyItemDtoList(List<WarehouseApplyItem> list);
}
